#include <iostream>
using namespace std;
class Abstraction
{
public:
	virtual ~Abstraction()
	{
	}
	virtual void Operation() = 0
	{
	}
protected:
	Abstraction()
	{
	}
};
class RefinedAbstraction:public Abstraction
{
public:
	RefinedAbstraction(AbstractionImp* imp);
	{
		_imp = imp;
	}
	~RefinedAbstraction()
	{
	}
	void Operation()
	{
		_imp->Operation();
	}
private:
	AbstractionImp* _imp;
};